数据结构(树,二叉搜索树,平衡二叉树 C++实现)

树(Tree)是n(n>=0)个结点的有限集合。n = 0时称为空树。在任意一颗非空树中:(1)有且仅有一个特定的称为根(Root)的结点;(2)当n > 1时,其余结点可分为m (m > 0)个互不相交的有限集 T1 T 1 T2 T 2 、 …… 、 Tm T m ,其中每一个集合本身又是一个树,并且称为根的子树(SubTree),如下图所示:

这里写图片描述

树的结点包含一个数据元素及若干指向其子树的分支。结点拥有的子树数称为结点的度(Degree)。度为0的结点称为叶结点(Leaf)或终端结点;度不为0的结点称为非终端结点或分支结点。除根结点之外,分支结点也称为内部结点。树的度是树内各结点的度的最大值。

结点的子树的根称为该结点的孩子(Child),相应地,该结点称为还的双亲(Parent)。同一个双亲的孩子之间互称兄弟(Sibling)。结点的祖先是从根到结点所经分支上的所有结点。对于 F F 来说 B A A 都是它的祖先。以某结点为根的子树中的任一结点都称为该结点的子孙。 B 的子树有 E E F G G <script type="math/tex" id="MathJax-Element-50">G</script>。如下图:

这里写图片描述

树的存储结构

树的存储结构有多种,常用的有双亲表示法、孩子表示法、孩子兄弟表示法。

双亲表示法

结构如下:

data parent

其中data是数据域,存储结点的数据信息。而parent是指针域,指向该结点的双亲。


template < typename T>
struct TreeNode
{
  T data;
  TreeNode * parent;
}

之前的树的存储结构如下:

这里写图片描述

孩子表示法
data child1 child2 child3 childd
template <typename T>
struct TreeNode
{
  T data;
  TreeNode * nodeList;
}

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值